// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/chromeos/ime/input_method_menu_manager.h"

#include <stddef.h>

#include "base/logging.h"
#include "base/memory/singleton.h"

namespace ui {
namespace ime {

    InputMethodMenuManager::InputMethodMenuManager()
        : menu_list_()
        , observers_()
    {
    }

    InputMethodMenuManager::~InputMethodMenuManager() { }

    void InputMethodMenuManager::AddObserver(
        InputMethodMenuManager::Observer* observer)
    {
        observers_.AddObserver(observer);
    }

    void InputMethodMenuManager::RemoveObserver(
        InputMethodMenuManager::Observer* observer)
    {
        observers_.RemoveObserver(observer);
    }

    InputMethodMenuItemList
    InputMethodMenuManager::GetCurrentInputMethodMenuItemList() const
    {
        return menu_list_;
    }

    void InputMethodMenuManager::SetCurrentInputMethodMenuItemList(
        const InputMethodMenuItemList& menu_list)
    {
        menu_list_ = menu_list;
        FOR_EACH_OBSERVER(InputMethodMenuManager::Observer,
            observers_,
            InputMethodMenuItemChanged(this));
    }

    bool InputMethodMenuManager::HasInputMethodMenuItemForKey(
        const std::string& key) const
    {
        for (size_t i = 0; i < menu_list_.size(); ++i) {
            if (menu_list_[i].key == key) {
                return true;
            }
        }
        return false;
    }

    // static
    InputMethodMenuManager* InputMethodMenuManager::GetInstance()
    {
        return base::Singleton<InputMethodMenuManager>::get();
    }

} // namespace ime
} // namespace ui
